﻿//////////////////////elaborado por: Susana Taquichiri////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Boa.AIT.Reportes.Negocios;
using Boa.AIT.Reportes.Raiz;

namespace Boa.AIT.Web.Controllers
{
    public class ReportesController : Controller
    {
        //
        // GET: /Reportes/

        public ActionResult Index()
        {
            return View();
        }

        #region Vistas para Usuarios

        public ActionResult FilterListAdmin()
        {
            return View();
        }

        public ActionResult FilterList()
        {
            return View();
        }

        public ActionResult FilterListAdquisiciones()
        {
            return View();
        }

        #endregion

        public ActionResult CodigosQR(int EquipoId)
        {   
            //ReportParametersDictionary dic = new ReportParametersDictionary(RenderFormat.PDF);
            ReportParametersDictionary dic = new ReportParametersDictionary(RenderFormat.EXCEL);
            
            dic.Add(Parametros.Renderizador, Renderizadores.CodigosQR);
            dic.Add(Parametros.EquipoDisponibleId, EquipoId.ToString());
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }

        #region RolUsuario
        public ActionResult RolUsuario()
        {
            return View();
        }

        [HttpPost]
        public ActionResult RolUsuario(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptRolUsuario);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewRolUsuario(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new RolUsuarioNegocios();
                var searchedItems = servicio.ListarRolesPorFiltro(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region EquipoAsignadoEmpleado
        public ActionResult EquipoAsignadoEmpleado()
        {
            return View();
        }

        [HttpPost]
        public ActionResult EquipoAsignadoEmpleado(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptEquipoAsignadoEmpleado);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewEquipoAsignadoEmpleado(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new EquipoAsignadoEmpleadoNegocios();
                var searchedItems = servicio.ListaEquipoAsignado(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region NotificacionMantenimiento
        public ActionResult NotificacionMantenimiento()
        {
            return View();
        }

        [HttpPost]
        public ActionResult NotificacionMantenimiento(FormCollection formulario)
        {
            ReportParametersDictionary dic = new ReportParametersDictionary(RenderFormat.EXCEL);
            dic.Add(Parametros.Renderizador, Renderizadores.RptNotificacionMantenimiento);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewNotificacionMantenimiento(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new NotificacionMantenimientoNegocios();
                var searchedItems = servicio.ListaNotificacionMantenimiento();
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region SolicitudEquipo
        public ActionResult SolicitudEquipo()
        {
            return View();
        }

        [HttpPost]
        public ActionResult SolicitudEquipo(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptSolicitudEquipo);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewSolicitudEquipo(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new SolicitudEquipoNegocios();
                var searchedItems = servicio.ListaSolicitudEquipo(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region ProveedorTaller
        public ActionResult ProveedorTaller()
        {
            return View();
        }

        [HttpPost]
        public ActionResult ProveedorTaller(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptProveedorTaller);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }

        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewProveedorTaller(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new ProveedorTallerNegocios();
                var searchedItems = servicio.ListaProveedorTaller(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }


        #endregion

        #region GarantiaEquipo
        public ActionResult GarantiaEquipo()
        {
            return View();
        }

        [HttpPost]
        public ActionResult GarantiaEquipo(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptGarantiaEquipo);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewGarantiaEquipo(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new GarantiaEquipoNegocios();
                var searchedItems = servicio.ListaGarantiaEquipo(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region MantenimientoEquipoEmpleado
        public ActionResult MantenimientoEquipoEmpleado()
        {
            return View();
        }

        [HttpPost]
        public ActionResult MantenimientoEquipoEmpleado(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptMantenimientoEquipoEmpleado);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewMantenimientoEquipoEmpleado(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new MantenimientoEquipoEmpleadoNegocios();
                var searchedItems = servicio.ListaMantenimientoEquipoEmpleado(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region AccionMantenimientoEquipo
        public ActionResult AccionMantenimientoEquipo()
        {
            return View();
        }

        [HttpPost]
        public ActionResult AccionMantenimientoEquipo(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptAccionMantenimientoEquipo);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewAccionMantenimientoEquipo(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new AccionMantenimientoEquipoNegocios();
                var searchedItems = servicio.ListaAccionMantenimientoEquipo(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region HistorialMantenimiento
        public ActionResult HistorialMantenimiento()
        {
            return View();
        }

        [HttpPost]
        public ActionResult HistorialMantenimiento(FormCollection formulario)
        {
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptHistorialMantenimiento);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewHistorialMantenimiento(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new HistorialMantenimientoNegocios();
                var searchedItems = servicio.ListaHistorialMantenimiento();
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region MantenimientoFechaActual
        public ActionResult MantenimientoFechaActual()
        {
            return View();
        }

        [HttpPost]
        public ActionResult MantenimientoFechaActual(FormCollection formulario)
        {
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptMantenimientoFechaActual);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewMantenimientoHoy(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new MantenimientoFechaActualNegocios();
                var searchedItems = servicio.ListaMantenimientoFechaActual();
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region EquiposAlmacen
        public ActionResult EquiposAlmacen()
        {
            return View();
        }

        [HttpPost]
        public ActionResult EquiposAlmacen(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptEquiposAlmacen);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewEquiposAlmacen(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new EquiposAlmacenNegocios();
                var searchedItems = servicio.ListaEquiposAlmacen(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion

        #region ActivoAsignado
        public ActionResult ActivoAsignado()
        {
            return View();
        }

        [HttpPost]
        public ActionResult ActivoAsignado(FormCollection formulario)
        {
            string filtro = formulario["filtro"];
            ReportParametersDictionary dic = new ReportParametersDictionary();
            dic.Add(Parametros.Renderizador, Renderizadores.RptActivoAsignado);
            dic.Add(Parametros.filtro, filtro);
            return Redirect(DirectorReporte.ConstruirURL(dic));
        }
        /// <summary>
        /// ESTO DISPARA DATOS PARA EL JTABLE
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="jtStartIndex"></param>
        /// <param name="jtPageSize"></param>
        /// <param name="jtSorting"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult JSONPreviewActivoAsignado(string filter = "", int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            try
            {
                var servicio = new ActivoAsignadoNegocios();
                var searchedItems = servicio.ListaActivoAsignado(filter);
                var items = searchedItems.Skip(jtStartIndex).Take(jtPageSize).ToList();
                return Json(new { Result = "OK", Records = items, TotalRecordCount = searchedItems.Count() });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }
        #endregion
    }
}
